<?php

class AuditoriaCronograma extends CI_Model{
    var $id;
    var $t_tipo_auditoria_id;
    var $t_entidad_id;
    var $t_personas_id;
    var $t_estado_auditoria_id;
    var $fecha_programada;
    var $fecha_realizada;
    var $personal_auditado;
    var $observaciones_grales;

    function __construct()
    {
        parent::__construct();
    }
    
function  cronograma($anio, $mes, $entidad, $auditor)
    {
        
        $condicion="YEAR(t_auditoria.fecha_programada) = ". $anio . " AND MONTH(t_auditoria.fecha_programada) = ". $mes ."";

        $consulta = "SELECT  t_entidad.id, t_entidad.nombre, t_auditoria.t_estado_auditoria_id, t_auditoria.t_personas_id,
                              t_auditoria.fecha_programada, t_auditoria.fecha_realizada , t_personas.nombre as auditor, t_auditoria.id as id_auditoria
                      FROM t_auditoria   INNER JOIN t_entidad  ON t_auditoria.t_entidad_id = t_entidad.id INNER JOIN t_personas ON t_auditoria.t_personas_id = t_personas.id
                      WHERE ". $condicion . "
                     
                      UNION
 
                      SELECT id, nombre, null as t_estado_auditoria_id, null as t_personas_id, 
                             null as fecha_programada, null as fecha_realizada, null as auditor, null as id_auditoria 
                      FROM t_entidad 
                      ORDER BY nombre
                     ";
         
        if ($entidad != 'Todos') {
            $condicion = $condicion . " AND t_entidad.id = " . $entidad ;
            $consulta = "SELECT  t_entidad.id, t_entidad.nombre, t_auditoria.t_estado_auditoria_id, t_auditoria.t_personas_id,
                              t_auditoria.fecha_programada, t_auditoria.fecha_realizada , t_personas.nombre as auditor
                      FROM t_auditoria   INNER JOIN t_entidad  ON t_auditoria.t_entidad_id = t_entidad.id INNER JOIN t_personas ON t_auditoria.t_personas_id = t_personas.id
                      WHERE ". $condicion . "
                      ORDER BY nombre";
                                  
              }
              
        if ($auditor != 'Todos') {
            $condicion = $condicion . " AND t_auditoria.t_personas_id = " . $auditor ;
           $consulta = "SELECT  t_entidad.id, t_entidad.nombre, t_auditoria.t_estado_auditoria_id, t_auditoria.t_personas_id,
                              t_auditoria.fecha_programada, t_auditoria.fecha_realizada , t_personas.nombre as auditor
                      FROM t_auditoria   INNER JOIN t_entidad  ON t_auditoria.t_entidad_id = t_entidad.id INNER JOIN t_personas ON t_auditoria.t_personas_id = t_personas.id
                      WHERE ". $condicion . "
                      ORDER BY nombre";

            }
            
    
        $consulta2 = "SELECT `t_habitaciones`.`nombre`, `t_reservas`.`id`,
                    `t_habitaciones`.`id` as habitacion, DAY( t_reservas.fecha_llegada ) as dia_desde, 
                    DAY( t_reservas.fecha_salida) as dia_hasta, 
                    DATEDIFF( t_reservas.fecha_salida, `t_reservas`.`fecha_llegada` ) as dias, 
                    t_reservas.fecha_llegada as fecha, MONTH( t_reservas.fecha_llegada ) as mes_desde,
                    t_reservas.estado, CONCAT(t_clientes.id, '-', t_clientes.apellido,  ', ', t_clientes.nombre) as cliente, t_reservas.id_procedencia as procedencia,
                    t_reservas.pagado
                    FROM (`t_habitaciones`) left OUTER JOIN `t_reservas` ON `t_reservas`.`id_habitacion` = `t_habitaciones`.`id` 
                    INNER JOIN t_clientes on t_clientes.id = t_reservas.id_cliente
                    WHERE t_reservas.estado <> 3 AND ((Year(t_reservas.fecha_llegada) = ". $anio . " AND Month(t_reservas.fecha_llegada) = ". $mes ." ) or (t_reservas.fecha_llegada is null or t_reservas.fecha_llegada is null) or ( DATE('" . $anio . "-" . $mes . "-1 01:02:03')  between t_reservas.fecha_llegada and t_reservas.fecha_salida ))

                    UNION

                    SELECT  nombre, null as 'id', id as 'habitacion', null as 'dia_desde', null as 'dia_hasta', null as 'dias', 
                    DATE('1900-1-1 01:02:03') as fecha, -20 as mes_desde, null as estado, null as cliente, null as procedencia,
                    null as pagado
                    from t_habitaciones 
                    ORDER BY habitacion asc, fecha asc";
        
        $consulta3 = "SELECT  t_entidad.id, t_entidad.nombre, t_auditoria.t_estado_auditoria_id, t_auditoria.t_personas_id,
                             t_auditoria.fecha_programada, t_auditoria.fecha_realizada 
                     FROM t_auditoria   INNER JOIN t_entidad  ON t_auditoria.t_entidad_id = t_entidad.id
                     WHERE ". $condicion . "
                   
                     UNION

                     SELECT id, nombre, null as t_estado_auditoria_id, null as t_personas_id, 
                            null as fecha_programada, null as fecha_realizada 
                     FROM t_entidad 
                   
                     ORDER BY nombre";
        
        
        $resultado =$this->db->query($consulta);
        // $this->db->get();
        return $resultado->result();
    }
    
    function nuevo($id_entidad)
    {
        $this->t_tipo_auditoria_id = $_POST['t_tipo_auditoria_id'];        
        $this->t_entidad_id = $id_entidad;        
        $this->t_personas_id = $_POST['t_personas_id'];
        $this->t_estado_auditoria_id = 1;
        $this->fecha_programada = $this->sqlfecha($_POST['fecha_programada']);

        $this->db->trans_start();
        $this->db->insert('t_auditoria', $this);  
        $this->db->trans_complete();
        if($this->db->trans_status() == FALSE)
        {
            show_error('Error en la insercion. CODIGO: ' . $this->db->_error_message());
        }else{
            header('Location: ' . base_url() . 'cauditoriaCronograma'); 
        }
    }
    
    function listarTodos()
    {
        $this->db->select('t_auditoria.id, t_entidad.nombre as entidad, t_personas.nombre as personas, t_estado_auditoria.nombre as estado, fecha_programada, fecha_realizada, personal_auditado, observaciones_grales');
        $this->db->from('t_auditoria');
        $this->db->join('t_entidad', 't_auditoria.t_entidad_id = t_entidad.id');
        $this->db->join('t_personas', 't_auditoria.t_personas_id = t_personas.id');
        $this->db->join('t_estado_auditoria', 't_auditoria.t_estado_auditoria_id = t_estado_auditoria.id');
        $this->db->where('t_auditoria.eliminado', 0);
        $query = $this->db->get();        
        
        return $query->result();
    }
    
     function getAuditoria($id){
        $auditoria = $this->db->get_where('t_auditoria', array('id'=> $id));
        return $auditoria->first_row();
                
    }
    
    function modificar($id){
       // if($id_tipo == $_POST['id']){
            
            $datos = array(
                
                't_entidad_id'=> $_POST['t_entidad_id'],        
                't_personas_id'=> $_POST['t_personas_id'],
                't_estado_auditoria_id'=> $_POST['t_estado_auditoria_id'],
                'fecha_programada'=> $_POST['fecha_programada'],
                'fecha_realizada'=> $_POST['fecha_realizada'],
                'personal_auditado'=> $_POST['personal_auditado'],
                'observaciones_grales'=> $_POST['observaciones_grales'],
            );
            
            $this->db->trans_start();
            $this->db->where('id',$id);
            $this->db->update('t_auditoria',$datos);
            $this->db->trans_complete();

            if($this->db->trans_status() == FALSE)
            {
                show_error('Error en la insercion. CODIGO: ' . $this->db->_error_message());
            }else{
                header('Location: ' . base_url() . 'cauditoria/consultar'); 
            }      
        
    }
    
    function eliminar($id)
    {
        $this->db->trans_start();
        $this->db->where('id',$id);
        $datos = array('eliminado'=>1);
        $this->db->update('t_auditoria',$datos);
        $this->db->trans_complete();
        if($this->db->trans_status() == FALSE)
        {
            show_error('Error en la insercion. CODIGO: ' . $this->db->_error_message());
        }else{
            header('Location: ' . base_url() . 'cauditoria/consultar'); 
        }
    }
    
    public function sqlfecha($fechasql){
        return date('Y-m-d',strtotime($fechasql));
    }               
}
